💼 마라톤 선수 순위 매기기 문제
🧾 문제 설명
마라톤 선수 N명의 완주 시간이 주어집니다. 완주 시간이 짧을수록 높은 순위(1등)이며, 동일한 시간이 있으면 동점 처리하여 같은 순위를 가집니다. 예를 들어, 2명이 1등이면 다음 순위는 3등입니다.
📥 입력 예시
let timelamps = [125, 130, 125, 140, 135, 130];
- 완주 시간 (초 단위, 양의 정수)
🎯 목표
📚 풀이 과정
💡 접근 방법
- 각 선수 시간을 기준으로 모든 선수와 비교하여 자신보다 시간이 더 빠른 사람이 몇 명인지 확인합니다.
- 자신보다 빠른 선수 수 +1이 해당 선수의 순위가 됩니다.
🤔 처음에는
내가 시도한 방법은 점수를 내림차순으로 정렬한 후, indexOf로 배열의 등수를 매기려고 했지만, 중복되는 점수는 매길 수 없었습니다.
✅ 정답 코드
정답 보기 🔍
function solution(times){
let answer = Array.from({length: times.length}, () => 1)
for (let i = 0; i < times.length; i++) {
for (let j = 0; j < times.length; j++) {
if (times[i] < times[j]) {
answer[i] += 1
}
}
}
return answer;
}
let times = [125, 130, 125, 140, 135, 130];
console.log(solution(times));
📌 마무리 회고
- 등수를 매길 때, 모든 요소를 비교해 순위를 정하는 방식을 사용하여 동점자도 자연스럽게 처리가 가능